package com.zs.propertymanage.service.impl;

import com.zs.propertymanage.dataObj.R;
import com.zs.propertymanage.dataObj.workorderExtra.WorkOrderCategoryFlow;

public interface WorkOrderService {

    /**
     * 获取所有工单
     *
     * @param search      搜索条件
     * @param currentPage 当前页码
     * @param pageSize    每页数量
     * @return 返回所有工单
     */
    R getAllWorkOrder(String search, Integer currentPage, Integer pageSize);

    /**
     * 获取所有分类
     *
     * @return 返回所有分类
     */
    R getAllCategory();

    /**
     * 添加分类
     *
     * @param categoryName 分类名称
     * @return 返回添加的分类
     */
    R addCategory(String categoryName);

    /**
     * 删除分类
     *
     * @param id 分类ID
     * @return 返回删除成功的分类
     */
    R deleteCategory(Integer id);

    /**
     * 获取所有工单状态
     *
     * @return 返回所有工单状态
     */
    R getAllWorkOrderStatus();

    /**
     * 添加工单状态
     *
     * @param statusName 状态名称
     * @return 返回添加的工单状态
     */
    R addWorkOrderStatus(String statusName);

    /**
     * 删除工单状态
     *
     * @param id 状态ID
     * @return 返回删除成功的工单状态
     */
    R deleteWorkOrderStatus(Integer id);

    /**
     * 设置分类流程
     *
     * @param flow 分类流程
     * @return 返回设置后的分类流程
     */
    R setCategoryFlow(WorkOrderCategoryFlow flow);

    /**
     * 根据id获取工单信息
     *
     * @param workOrderId 工单ID
     * @return 返回工单信息
     */
    R getWorkOrderById(String workOrderId);

    /**
     * 根据工单号获取处理信息
     *
     * @param workOrderId 工单号
     * @return 处理信息
     */
    R getHandleInfo(String workOrderId);

    /**
     * 改变工作订单关闭状态
     *
     * @param workOrderId 工作订单ID
     * @return 改变后的工作订单关闭状态
     */
    R switchCloseStatus(String workOrderId);

    /**
     * 设置工单分类的职责人员
     *
     * @param duty 职责人员id数组
     * @return 处理结果
     */
    R setCategoryDuty(Integer categoryId, String[] duty);

    // 获取分类的职责人员
    R getCategoryDuty(Integer categoryId);
}
